package com.ts.api.module.product.biz;

import com.ts.api.module.api.entity.bo.ApiBizMatchBO;
import com.ts.api.module.api.entity.po.ApiKeyPO;
import com.ts.api.module.api.entity.vo.ReqApiParameterVO;
import com.ts.api.module.product.entity.po.ProductPlanPO;

import java.util.List;

/**
 *  计划匹配业务层
 *
 *  @author Pan
 */
public interface ProductMatchBiz {

    /**
     *  API匹配-根据用户资质匹配机构计划
     *
     *  @param  apiKeyPO        Api客户端
     *  @param  reqApiParameterVO   请求参数
     *  @param  apiBizMatchBO   API业务匹配实体
     *  @return List
     */
    List<ProductPlanPO> apiMatchPlan(ApiKeyPO apiKeyPO, ReqApiParameterVO reqApiParameterVO, ApiBizMatchBO apiBizMatchBO);

    /**
     *  api-将以匹配到的计划根据价格分发
     *
     *  @param  reqApiParameterVO   表单参数
     *  @param  reqApiParameterVO   表单参数
     *  @param  listMatchPlan   已匹配的计划
     *  @return ProductPlanPO   已匹配到的计划
     */
    ProductPlanPO apiAllocateByPrice(ApiKeyPO apiKeyPO, ReqApiParameterVO reqApiParameterVO, List<ProductPlanPO> listMatchPlan);

    /**
     *  搜索同价格分发
     *
     *  @param  listMatchPlan       已经匹配的计划集合
     *  @return ProductPlanPO       返回可分发的计划
     */
    ProductPlanPO searchSamePriceAllocate(List<ProductPlanPO> listMatchPlan);
}
